package eu.log;


/**
 * 日志守护者,负责将日志写入存储设备中,获取查询接口以及相关的策略管理
 * @author 吴振振
 * @version 1.0 alpha
 */
public interface LogDaemon {
	
	/**
	 * 将一个调试日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void debug(String clientIdentity,String event);
	
	/**
	 * 将一个普通日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void info(String clientIdentity,String event);
	
	/**
	 * 将一个重要信息日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void notice(String clientIdentity,String event);
	
	/**
	 * 将一个警告日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void warn(String clientIdentity,String event);
	
	/**
	 * 将一个错误日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void error(String clientIdentity,String event);
	
	/**
	 * 将一个致命错误日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void deadly(String clientIdentity,String event);
	
	/**
	 * 将一个警报日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void alert(String clientIdentity,String event);
	
	
	
	/**
	 * 将一个无客户标识的调试日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void debug(String event);
	
	/**
	 * 将一个无客户标识的普通日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void info(String event);
	
	/**
	 * 将一个无客户标识的重要信息日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void notice(String event);
	
	/**
	 * 将一个无客户标识的警告日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void warn(String event);
	
	/**
	 * 将一个无客户标识的错误日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void error(String event);
	
	/**
	 * 将一个致命错误日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param clientIdentity
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void deadly(String event);
	
	/**
	 * 将一个无客户标识的警报日志加入到管理队列中,根据Daemon行为的不同,日志并不总是立刻同步到存储中.
	 * @param event
	 * @see #takeLog(Log)
	 * @see eu.log.Rank
	 */
	public void alert(String event);
	
	/**
	 * 获取日志查询接口
	 * @return  QueryInterface
	 */
	public QueryInterface getQueryFace();
}
